layui.define(['element', 'layer', 'jquery'], function (exports) {
	var element = layui.element(),
		layer = layui.layer,
		$ = layui.jquery,
		$i = 0, //id标识符
		$iframeTemple, //iframe模板
		$iframeSrc, //iframe路径
		$iframeTabTtile, //iframeTab标题
		$dataId, //唯一标识符
		$tabIndex = 0, //tab下标
		$cacheId = [], //缓存id
		$initId = -1, //首页id
		$headerHeight = $(".layui-header").outerHeight(true), //导航高度
		$mainHeaderHeight = $(".xbzx-cms-cite ul").outerHeight(true), //ul Tab选项卡高度
		$mainHeight = $('.layui-body').outerHeight(true) - 58, //iframe高度
		$navHeight = parseFloat($('#admin-side').css('height')), //左边导航栏高度
		$wW = $(window).outerWidth(true);
	    $tabContent = $(".layui-tab-content"),
		$layTab = $(".layui-layout-admin .layui-body"),
		$layTitle = $(".layui-tab-title"),
		$xbTp = true,
		$initXbTp = 'false',
	    $contextMenuTemplate = '';
	    
	document.oncontextmenu = function (evt) {
		var e = evt || window.event;
		if (e.preventDefault) {
			e.preventDefault();
			return false;
		} else {
			e.returnValue = false;
		}
	};
	var c = false;
	$(".nav_logo").on('click', function () {
		if (c) {
			return
		}
		if ($(".layui-side").css('width') !== '200px') {
			bb();
			return false;
		}
		c = true;
		setTimeout(aa, 200);

		function aa() {
			$(".layui-side").animate({
				width: 0
			}, 300);
			$layTab.animate({
				left: 0
			}, 400);
			c = false;
		}
		function bb() {
			$(".layui-side").animate({
				width: 200 + 'px'
			}, 500);
			$layTab.animate({
				left: 200 + 'px'
			}, 400);
		}
	});

    /*一级菜单选项多余10个用省略号代替,加下拉框*/
	var $navLfList=$('.nav_left_list');
	var limitLength=8;
	var liLen=$navLfList.find('li').length;
	var liDomArr=[];
	if(liLen>limitLength){
		$navLfList.find('.layui-nav').append(('<li class="layui-nav-item more"><a href="javascript:;">… <ul class="moreMenu"></ul></a></li>'));
		var downmenu='';
	   for(var i=limitLength;i<liLen+1;i++){
			var liDom=$('.nav_left_list li:nth-child('+(i+1)+')')[0];
			liDomArr.push(liDom);
		}
	   var arrLen=liDomArr.length
	   for(var i=0;i<arrLen;i++){
		   $('.nav_left_list .moreMenu').append(liDomArr[i]);
	   }
		console.log($('.nav_left_list .moreMenu')[0])
		
		$('.nav_left_list .more').hover(function(){
			$(this).find('.moreMenu').fadeIn();
			$(this).addClass('heig');
		},function(){
			$(this).find('.moreMenu').fadeOut();
			$(this).removeClass('heig');
		})
		
		/*更多点击出现下拉框操作*/
		$('.moreMenu li').click(function(){
			$(this).addClass('active').siblings('.active').removeClass('active');
		})
	}
	
   /*一级菜单右侧导航*/
	$('.nav_right_list .nav_bc li').hover(function(){
		$(this).children('.hoverbox').stop();
		$(this).children('.hoverbox').hide();
		$(this).children('.hoverbox').fadeIn();			
	},function(){
		$(this).children('.hoverbox').stop();
		$(this).children('.hoverbox').fadeOut();			
	})
	
  /*请求导航菜单所有数据*/	
	var menuData='';
	var $topMenu=$('#top-menu'),
		$leftMenu=$('#xbzx_left_menu');
	
	$.ajax({
   	  type: 'POST',
	  url:'/allList',
	  success:function(data){
		  menuData=data;
	  },
	  error:function(){
		  layer.msg("请求失败", {time: 300});
	  }
   });
	
	function initLevelMunu(data,topfid){
		var liList = '';
		var liChildList = '';
		$(data.menulist).each(function(k,v){
			if(this.fid==topfid){
				console.log(this);
				$(this.children).each(function(k2,v2){
					if (!this.children) {
						liList += '<li class="layui-nav-item" ><a href="javascript:;" data-url="' + this.url + '" data-fid="' + this.fid + '" relurl="' + this.relurl + '"><cite>' + this.name + '</cite></a></li>'
					} else {
						console.log('有子节点')
						liChildList = '';
						$(this.children).each(function(k3,v3){
							liChildList += '<dd title="' + this.name + '" class="">' +
							'<a href="javascript:;" data-url="' + this.url + '" relurl="' + this.relurl + '" data-fid="' + this.fid + '"><cite>' + this.name + '</cite></a>' +
							'</dd>'
						})
						liList += '<li class="layui-nav-item" ><a href="javascript:;" data-url="' + this.url + '" data-fid="' +this.fid + '" ><cite>' +this.name + '</cite><span class="layui-nav-more"></span></a><dl class="layui-nav-child">' + liChildList + '</dl></li>'
					}
					$leftMenu.empty();
					$leftMenu.html(liList);
					$('#xbzx_left_menu li:first-child').addClass('layui-this');
					element.init();
				})
			}
		})
	}
	/*一级菜单 触发加载*/
	element.on('nav(top-menu)', function (elem) {
		var $sideMenu = $('#xbzx_left_menu');
		if ($(this).find('a').attr('data-url') == '/main') {
			$('#xbzx-cms-tab .layui-tab-title>li[lay-id="-1"]').addClass('layui-this').siblings('.layui-this').removeClass('layui-this');
			$('#layui-tab-brief li:first-child').addClass('layui-this');
			$(".layui-tab-content").find('div').removeClass('layui-show').eq(0).addClass('layui-show')
			$sideMenu.empty();
		}else if(!$(this).find('a').attr('data-url')){
			return;
		} else {
			var topfid=$(this).find("a").attr("data-fid");
			initLevelMunu(menuData,topfid);//通过一级菜单id查找并渲染二三级导航
		}
	});
	/*侧边栏及tab切换操作*/
	element.on('nav(side)', function (elem) {
		iframeHTML('.layui-tab-content .layui-this iframe');
		loadIframe('.layui-tab-content .layui-this iframe');
		$cacheId = [];
		$iframeSrc = elem.find('a').attr("data-url");
		$iframeRel= elem.find('a').attr("relurl");
		
		$iframeTemple = '<iframe data-rel="'+$iframeRel+'" name="'+$iframeRel+'" src=' + $iframeSrc + ' style="height:' + $mainHeight + 'px"' + 'id="iNow"' + '></iframe>';
		$iframeTabTtile = $.trim(elem.find('a').text());

		$("ul.layui-tab-title li").each(function (i, ele) {
			$cacheId.push($(this).attr('lay-id'));
		})
		
		//添加数组如果id重复则只切换标签样式不进行添加
		for (var i = 0; i < $cacheId.length; i++) {
			if ($cacheId[i] == $iframeRel) {
				changeTab('xbzx-cms-tab', $iframeRel)
				return false;
			};
		}
		
		$("#loading").fadeIn();
		element.tabAdd('xbzx-cms-tab', {
			title: $iframeTabTtile,
			content: $iframeTemple, //支持传入html
			xbTp: $xbTp,
			id: $iframeRel
		});
		
		changeTab('xbzx-cms-tab', $iframeRel);	
		element.init();
	});

	/*主体部分的tab切换操作*/
	element.on('tab(xbzx-cms-tab)', function (data,e) {
		// console.log(this); //当前Tab标题所在的原始DOM元素
		// console.log(data.index); //得到当前Tab的所在下标
		// console.log(data.elem); //得到当前的Tab大容器
		var $tabIndex = data.elem.find("ul li").eq(data.index).attr('lay-id');
		if ($tabIndex == -1) {
			$(".layui-side ul dl dd").removeClass('layui-this');
			$(".layui-side ul li").removeClass('layui-this');
			$('.nav_left_list .nav_bc>li.layui-this').removeClass('layui-this');
			element.init();
		}

		var $thisDda=$('#admin-navbar-side ul dl dd>a[relurl="' + $tabIndex + '"]'),
			$thisSiba=$('#admin-navbar-side ul dl dd.layui-this'),
			$thisLia=$('#admin-navbar-side ul li>a[relurl="' + $tabIndex + '"]'),
			$thisSibLia=$('#admin-navbar-side ul li.layui-nav-itemed');
		
		if($thisDda.length){
			$thisSiba.removeClass('layui-this');
			$thisDda.parent().addClass('layui-this');
			$thisSibLia.removeClass('layui-nav-itemed');
			$thisDda.parent().parent().parent().addClass('layui-nav-itemed');
		}else if($thisLia.length){
			$thisSibLia.removeClass('layui-nav-itemed');
			$thisLia.parent().addClass('layui-nav-itemed');	
		}
		$("#loading").fadeOut();
		element.init();
	});

	window.onresize = function () {
		$mainHeight = $('.layui-body').outerHeight(true) - 58;
		$tabContent.css({
			height: $mainHeight,
			minHeight: 150 + 'px',
			padding: 15 + 'px',
			paddingBottom:0
		});
		$tabContent.find(".layui-tab-item iframe").css({
			height: $mainHeight-30
		});
	};

    /*默认工作台*/
	if (!$(".nav_left_list .layui-nav").find("li").hasClass("layui-this")) {
		$tabContent = $(".layui-tab-content").css({
			//height: $mainHeight,
			minHeight: 150 + 'px',
			padding: 15 + 'px',
			paddingBottom:0
		});
		$iframeTemple = '<iframe src="/main" style="height:' + $mainHeight + 'px"></iframe>';
		$iframeTabTtile = '工作台';
		$("#loading").fadeIn();
		element.tabAdd('xbzx-cms-tab', {
			title: $iframeTabTtile,
			content: $iframeTemple, //支持传入html
			id: $initId,
			xbTp: $initXbTp
		});
		changeTab('xbzx-cms-tab', $initId);
		$("#loading").fadeOut();
	}

	/*右键出现对tab可操作菜单--开始*/
	$(".layui-tab-title").on("mousedown", "li", function (e) {
		//右键菜单的宽度等于选中每一个 li的宽度+20px
		var $liWidth = $(this).outerWidth(true) - 30 + "px";
		var $adminNavbarSideWidth = $('.layui-side').width();
		var leftPadding=(parseFloat($(this).outerWidth(true))-parseFloat($liWidth))/2;
		var $liLeft = $(this).position().left+leftPadding+ $adminNavbarSideWidth + 'px';
		var $liTop = $mainHeaderHeight + $headerHeight + 'px'
		var $state = $(this).index();

		function creatContextMenu() {
			$contextMenuTemplate =
				'<div id="contextmenu" style="width:' + $liWidth + ';left:' + $liLeft + ';top:' + $liTop + '">' +
				'<blockquote class="layui-elem-quote" data-local-type="refreshNow" style="width:' + $liWidth + ';">' +
				'刷新当前页' +
				'</blockquote>' +
				'<blockquote class="layui-elem-quote" data-local-type="closeNow" style="width:' + $liWidth + ';">' +
				'关闭当前页' +
				'</blockquote>' +
				'<blockquote class="layui-elem-quote" data-local-type="closeOuther" style="width:' + $liWidth + ';">' +
				'关闭其他页' +
				'</blockquote>' +
				'<blockquote class="layui-elem-quote" data-local-type="closeAll" style="width:' + $liWidth + ';">' +
				'关闭全部' +
				'</blockquote>' +
				'</div>'
			$("body").append($contextMenuTemplate)
		}

		switch (e.which) {

			case 3:
				var f = $(this).attr('xbzx-data-state', false).siblings('li').attr('xbzx-data-state', $xbTp);
				$tabContent.find('div.layui-show iframe').attr('id', 'iNow');
				if ($('#contextmenu').length) {
					var fc = $(this).attr('xbzx-data-state')
					if (fc == 'false') {
						if ($('#contextmenu').length) {
							document.querySelector('#contextmenu').style.transform = "rotate(180deg)";
							document.querySelector('#contextmenu').style.transform = "scale(0,0)";
							setTimeout(function () {
								$("#contextmenu").remove()
							}, 300)
							creatContextMenu();
							return false;
						}
						creatContextMenu();
						$(this).attr('xbzx-data-state', $xbTp)
					}
				} else {
					creatContextMenu();
				}
				break;
			case 1:
				if ($("#contextmenu").length >= 1) {
					$("#contextmenu").remove();
				}
				return false;
				break;
			default:

				break;
		}
	})

	$(document).on("click", 'blockquote', function (e) {
		var $dataLocalType = $(this).attr('data-local-type');
		var $dataIndex = $('.layui-tab-title li[xbzx-data-state="false"]').index();
		var $prevIndex = 0;
		switch ($dataLocalType) {
			case 'refreshNow':
				//刷新当前页面
				document.getElementById('iNow').contentWindow.location.reload(true);
				console.log(document.getElementById('iNow'));
				
				var currId=$('.layui-tab-title li.layui-this').attr('lay-id');
				$('iframe[id="iNow"]').each(function(i){
				   if($(this).attr('data-rel') === currId){
					  var ifName = $(this).attr('name');
					  window.frames[ifName].location.reload(true);
				   }
			    })
				$("#contextmenu").remove();
				break;
			case 'closeNow':
				$('.layui-tab-title li').eq($dataIndex).off('click').on('click', function () {
					//获取被删除的id
					var $deleId = $('.layui-tab-title li[xbzx-data-state="false"]').attr('lay-id');
					
					//当导航为长度为1的时候不能删除
					if ($('.layui-tab-title li').length == 1 || $deleId == '-1') {
						return false;
					}

					//获取右键点击的是前面还是后面
					$prevIndex = $(this).prev('li').index();
					$nextIndex = $(this).next('li').index();

					if ((($prevIndex + $nextIndex) / 2 == $dataIndex)) {
						$(this).last().addClass('layui-this');
						$tabContent.find('div').last().addClass('layui-show');

						$('.xbzx_left_menu li dd a[data-id="' + $deleId + '"]').children().removeClass('layui-this');
					} else if ($dataIndex > $prevIndex || $dataIndex == len - 1) {
						$(this).prev('li').addClass('layui-this');
						$tabContent.find('div').eq($dataIndex).prev('div').addClass('layui-show');
						$('.xbzx_left_menu li dd a[data-id="' + $deleId + '"]').parent().removeClass('layui-this');
					}

					//正常删除
					$(this).remove()
					$tabContent.find('div').eq($dataIndex).remove();
					//对应id的class要高亮显示
					var $newId = $('.layui-tab-title li.layui-this').attr('lay-id');

					$('.xbzx_left_menu li dd a[data-id="' + $newId + '"]').parent().addClass('layui-this');
					if ($('.xbzx_left_menu li').hasClass('layui-this')) {
						$('.xbzx_left_menu li').removeClass('layui-this');
					}

				})
				$('.layui-tab-title li[xbzx-data-state="false"]').trigger('click');
				$("#contextmenu").remove();
				break;
			case 'closeOuther':
				//关闭其他标签页
				$('.layui-tab-title li[xbzx-data-state="true"]').not(':first').remove();
				$('.layui-tab-content div.layui-tab-item').not(':first').not('.layui-show').remove();
				$("#contextmenu").remove();
				break;
			case 'closeAll':
				//关闭全部
				$('.layui-tab-title>li').not(":first").remove();
				$('.layui-tab-content>div').not(':first').remove();
				$('.layui-tab-title>li').addClass('layui-this');
				$tabContent.find('div').addClass('layui-show');
				$(".xbzx_left_menu dd").removeClass('layui-this');
				$(".layui-side ul li").removeClass('layui-this');
				$("#contextmenu").remove();
				break;
			default:
				break;
		}

	});
	
	loadIframe('iframe');
	iframeHTML('iframe');
	function loadIframe(elemt) {
		$(elemt).load(function () {
			setTimeout(function() {
				$('.layui-progress').css('display', 'none')
			},1000)
		})
	}


	function iframeHTML(ele) {
		if ($(ele).html() == '') {
			$('.layui-progress').css('display', 'block');
			var n = 0, timer = setInterval(function () {
				n = n + Math.random() * 10 | 0;
				if (n > 100) {
					n = 100;
					clearInterval(timer);
				}
				layui.element().progress('progress', n + '%');
			}, 50 + Math.random() * 50);
		}
	}

	function changeTab(el, index) {
		element.tabChange(el, index);
	}

	function deleTab(el, index) {
		element.tabDelete(el, index);
	}

	exports('xbzx-index', {}); //注意，这里是模块输出的核心，模块名必须和use时的模块名一致
});
